package com.cash.loan.modular.user.service;

import com.cash.loan.common.entity.UserInfo;
import com.cash.loan.common.result.PageResult;
import com.cash.loan.modular.cash.transfer.vo.ProductListVo;

import java.util.Map;

/**
 * @author Administrator
 * @Date 2018-07-09 16:12
 */
public interface UserService {

    /**
     * 用户注册，通过之后自动登录返回token
     * @param phone
     * @param password
     * @param ip
     * @param regFrom
     * @return
     */
    Map<String,String> register(String phone,String password,String ip,String regFrom);

    /**
     * 通过手机号判断用户是否存在
     * @param phone
     * @return
     */
    Boolean isExistedUser(String phone);

    /**
     * 校验手机号和密码
     * @param phone
     * @param password
     * @param ip
     * @return
     */
    UserInfo checkPhoneAndPwd(String phone,String password,String ip);

    /**
     * 生成token
     * @param userInfo
     * @return
     */
    Map<String,String> productToken(UserInfo userInfo);

    /**
     * 生成token名称
     * @return
     */
    String productTokenName();

    /**
     * 得到用户信息
     * @param id
     * @return
     */
    Map<String,Object> getUserInfo(Long id);

    /**
     * 更新/设置密码
     * @param id
     * @param password
     * @return
     */
    Boolean updatePassword(Long id,String password);

    /**
     * 更新用户信息
     * @param type
     * @param content
     * @param id
     * @return
     */
    Boolean updateUser(String type,String content,Long id);

    /**
     * 记录首次使用的手机用户信息
     * @param deviceId
     * @param ip
     * @return
     */
    Boolean saveUserLoginInfo(String deviceId,String ip);

    /**
     * 通过手机号修改密码(找回密码使用)
     * @param phone
     * @param password
     * @return
     */
    Boolean updatePasswordByPhone(String phone,String password);

    /**
     * 得到申请分页列表
     * @param currentPage
     * @param pageSize
     * @param visitId
     * @return
     */
    PageResult<ProductListVo> getUserApplyList(Integer currentPage,Integer pageSize,Long visitId);
}
